
/**
 * Copyright (c) Microsoft Corporation.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import { affectedTestFiles, cacheDir } from 'playwright/lib/transform/compilationCache';
import { buildBundle } from './vitePlugin';
import { resolveDirs } from './viteUtils';
import { runDevServer } from './devServer';
import type { FullConfigInternal } from 'playwright/lib/common/config';
import { removeFolderAndLogToConsole } from 'playwright/lib/runner/testServer';

export async function clearCacheCommand(config: FullConfigInternal) {
  const dirs = await resolveDirs(config.configDir, config.config);
  if (dirs)
    await removeFolderAndLogToConsole(dirs.outDir);
  await removeFolderAndLogToConsole(cacheDir);
}

export async function findRelatedTestFilesCommand(files: string[],  config: FullConfigInternal) {
  await buildBundle(config.config, config.configDir);
  return { testFiles: affectedTestFiles(files) };
}

export async function runDevServerCommand(config: FullConfigInternal) {
  return await runDevServer(config);
}
